// Builder.h

#ifndef __BUILDER_H__
#define __BUILDER_H__

#include <string>
using namespace std;

class Product;

class Builder
{
public:
	virtual ~Builder();
	virtual void BuildPartA(const string &buildPara) = 0;
	virtual void BuildPartB(const string &buildPara) = 0;
	virtual void BuildPartC(const string &buildPara) = 0;

	virtual Product *GetProduct() = 0;

protected:
	Builder();

private:
};

class ConcreteBuilder : public Builder
{
public:
	ConcreteBuilder();
	~ConcreteBuilder();

	void BuildPartA(const string &buildPara);
	void BuildPartB(const string &buildPara);
	void BuildPartC(const string &buildPara);

	Product *GetProduct();

protected:
private:
};

#endif